package com.hsjk.szwj.module.smedia.controller.admin.mediaManager.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;

/**
 * @desc 媒资内容列表VO
 * @Date 2023/07/05 13:52
 **/
@Data
public class MediaBasicInfosReqVO {
    /**
     * utcCreated（创建时间）的开始时间。
     * <p>
     * - 为开区间（大于开始时间）。
     * <p>
     * - 日期格式按照ISO8601标准表示，使用UTC时间。格式为："YYYY-MM-DD'T'hh:mm:ss'Z'"。例如：2017-01-11T12:00:00Z 表示北京时间2017年1月11日20点0分0秒。
     **/
    @Schema(description = "utcCreated（创建时间）UTC时间", example = "2017-01-11T12:00:00Z")
    private String startTime;

    /**
     * utcCreated的结束时间。
     * - 为闭区间（小于等于结束时间）。
     * - 日期格式按照ISO8601标准表示，使用UTC时间。格式为："YYYY-MM-DD'T'hh:mm:ss'Z'"。例如：2017-01-11T12:00:00Z 表示北京时间2017年1月11日20点0分0秒
     **/
    @Schema(description = "utcCreated（结束时间）UTC时间", example = "2017-01-11T12:00:00Z")
    private String endTime;

    /**
     * 媒资媒体类型。取值范围：
     * <p>
     * - "image" 图片
     * <p>
     * - "video" 视频
     * <p>
     * - "audio" 音频
     * <p>
     * - "text" 文字
     **/
    @Schema(description = "媒资媒体类型", example = "image;video;audio;text")
    private String mediaType;

    /**
     * 媒资业务类型。取值范围：
     * <p>
     * - "subtitles" 字幕
     * <p>
     * - "watermark" 水印
     * <p>
     * - "opening" 片头/开场
     * <p>
     * - "ending" 片尾
     * <p>
     * - "general" 通用
     **/
    @Schema(description = "媒资业务类型", example = "subtitles;watermark;opening;ending;general")
    private String businessType;

    /**
     * 来源,
     * <p>
     * - "oss" OSS存储
     * <p>
     * - "vod" 视频点播
     * <p>
     * - "live" 视频直播
     * <p>
     * - "general" 其他来源（默认）
     **/
    @Schema(description = "来源", example = "oss;vod;live;general")
    private String source;

    /**
     * 资源状态。取值范围：
     * <p>
     * - Init（初始状态：源文件未就绪）
     * <p>
     * - Preparing（源文件准备中：比如上传中或者剪辑合成中）
     * <p>
     * - PrepareFail（源文件准备失败：比如获取源文件信息失败）
     * <p>
     * - Normal（正常：源文件已就绪）
     **/
    @Schema(description = "资源状态", example = "Init;Preparing;PrepareFail;Normal")
    private String status;

    /**
     * 用来表示当前调用返回读取到的位置，空代表数据已经读取完毕。
     **/
    @Schema(description = "表示当前调用返回读取到的位置，空代表数据已经读取完毕", example = "")
    private String nextToken;

    /**
     * 本次请求所返回的最大记录条数。
     * 最大值：100，默认值：10
     **/
    @Schema(description = "返回的最大记录条数", example = "10")
    @Min(value = 10, message = "默认值为 10")
    private Integer maxResults;

    /**
     * 根据utcCreated排序, 默认倒序
     * <p>
     * - "desc" 倒序
     * <p>
     * - "asc" 正序
     **/
    @Schema(description = "返回的最大记录条数", example = "desc;asc")
    private String sortBy;

    /**
     * 如果为true，返回值中包含文件基础信息。
     **/
    @Schema(description = "如果为true，返回值中包含文件基础信息", example = "true;false")
    private Boolean includeFileBasicInfo;

    /**
     * 媒资ID
     **/
    @Schema(description = "媒资ID", example = "019b82e24b37a1c2958dec38")
    private String mediaId;
}
